/*
package com.tedu.api.io;

import javafx.embed.swing.DataFlavorUtils;
import org.testng.annotations.Test;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

*/
/**
 * RandomAccessFile解决：File无法实现读写操作
 *
 * RandomAccessFile类  随机访问文件类
 * 功能：实现“文件”。问进价的读写操作，底层使用c语言，底层：二进制数据
 *
 * 创建随机访问文件类
 * RandomAccessFile   raf=new RandomAccessFile（“路径+全称”，“rw”）
 *
 * 需求：实现CV 复制音乐或视频
 *//*


public class RandomAccessFileAPI {
    @Test
    public void testRAF() throws IOException {
        //RandomAccessFile对象创建出来--路径+全称
        RandomAccessFile raf=new RandomAccessFile("raf.txt","rw");
        //1.在API  项目文件夹下 创建raf。txt文件，并实读写操作
        //计算机  识别：二进制   00000000
        */
/**
         * 需要往raf.txt 写出一个a  字母
         * write（整数）
         * 作用：往文件中写出一个字节，抛出IO流异常：存在写出失败情况
         * 整数的低八位写出到文件中
         *
         * 1字节==8位写出到文件中       哦哦哦哦  哦哦哦      1
         *
         *                         0000   0010          2
         * 0000                       0011               3
         * 1024                   0000    0110
         * 1024字节==1kb
         * 1024kb==1mb
         * 1024mb=1g
         * 1024g=1t
         *//*

        raf.write(97);  //写出：一个字节，识别二进制，写十进制转二进制
        raf.write(98);
        raf.write(101);
        //write方法---一个字节一个字节
    }
    */
/**
     * read()
     * 作用：读取一个字节，返回十进制 int类型返回，如果文件读到-1，代表结束
     * 存在IO流异常，读取可能失败
     *//*

    @Test
    public void testRead() throws IOException {
        //创建对象：随机访问文件对象--只读--raf。txt文件的内容
        RandomAccessFile raf=new RandomAccessFile("raf.txt","r");
        int i=raf.read();// "a"---AscII
        int j=raf.read();//
        int k=raf.read();//ma
        int y=raf.read();
        System.out.println(i+""+j+""+k+""+y);
    }
    */
/**
     * RAF类---构造器实现：读写操作--
     *     write（数值）   read（）  一个字节一个字节写出以及读入
     *     需求：复制粘粘一个音乐  【version 1--不考虑效率】
     *//*

    @Test
    public void testCV() throws IOException {
        //1.源文件--小跳蛙。mp3--赋值--操作:读入
        RandomAccessFile src=new RandomAccessFile("小跳蛙.MP3","r");
        //2.复制文件--“心跳蛙。MP3”--粘粘--操作：写出
        RandomAccessFile desc=
                new RandomAccessFile("新跳蛙.mp3","rw");
        //3.用于保存读取到的字节：   1保存一个字节2-1代表文件读取到末尾
        int data=-1;

        //4.一直 从小跳蛙。MP3中一个字节一个字节读取--
        //同时一个字节一个字节写出新跳蛙。mp3
        //  src.read
        long start=System.currentTimeMillis();
        //获取到当前系统时间毫秒数
        while((data=src.read())!=-1){
            //同时一个字节一个字节写出“新跳蛙。MP3”
            desc.write(data);
        }
        long end=System.currentTimeMillis();
        System.out.println(""+(end-start)/1000+"毫秒");
    }
    */
/**
     * 需求：复制粘粘一个音乐   【】version  1--考虑效率】
     * 一个字节一个字节读取--一个字节一个字节写出【慢】
     * 100kb读取--100kb写出  【快】
     *
     *//*

    @Test
    public void testCVS() throws FileNotFoundException {
        //1.从小跳蛙。mp3--读取数据【100kb】
      RandomAccessFile raf=new RandomAccessFile("","");
      //2.从API目录下写出效率高。MP3--写出数据【100kb】
        RandomAccessFile desc=new RandomAccessFile("","");
        //3.保存每次读取字节量
        int len=-1;
        //4.效率:100kb  字节数组 byte
        byte[] data=new byte[1024*100];
        //5.一直 从src文件中读取数据:100kb
        //同时


        while( (len=src.read(data)) !=-1 ){}
//   src.read()     从src小跳蛙。mp3 一个字节一个字节读
        //5.2  src。read（byte【】 date） 从src小跳蛙。mp3 一个字节一个字节读
        //5.3  len=src.read(byte[] data)   从src小跳蛙。mp3 一个字节一个字节读
        //5.4（len=src。read（byte【】 date））！=-1     【复制判断条件】
        //将读到100KB的字节数据保存len中，只要不等于-1--没有读完一直读
        //同时，读文件同时，写出数据
        //write（这么好书） 写出一个字节【慢】
        // write（字节数组，0，-1）  写出字节数组指定的单位量【例:1000kb】
        desc.write(data,0,len);
    }
    long end=System.currentTimeMillis();
    System.out.println(""+(end-start)+"");
    //测：视频复制
}

*/





























